
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

@interface PUBaseViewController : UIViewController
// 初始化UI
- (void)initViews;

/**
 *  显示HUD
 */
- (void)showLoading:(NSString *_Nullable)str;

/**
 *  隐藏HUD
 */
- (void)hideLoading;
- (void)hideLoading:(NSTimeInterval)time;
/**
 *  Push到一个新的Storyboard控制器
 *  @param pushStoryboardName 要Push到的Storyboard名称
 *  @param pushName 要Push到的控制器Identifier
 *  @param params 属性参数
 */
- (void)pushStoryboard:(NSString *_Nullable)pushStoryboardName VCIdentifier:(NSString *_Nullable)pushName params:(NSDictionary<NSString *, id> *_Nullable)params;
/**
 *  Push到一个新的控制器
 *
 *  @param pushName 要Push到的控制器名称
 *  @param params 属性参数
 */

- (void)push:(NSString * _Nonnull)pushName params:(NSDictionary<NSString *, id> *__nullable)params;

/**
 *  present到一个新的Storyboard控制器
 *  @param pushStoryboardName 要present到的Storyboard名称
 *  @param pushName 要Push到的控制器Identifier
 *  @param params 属性参数
 */
- (void)presentStoryboard:(NSString *_Nullable)pushStoryboardName VCIdentifier:(NSString *_Nullable)pushName params:(NSDictionary<NSString *, id> *_Nullable)params;



/**
 *  present到一个新的控制器//模态弹出
 *
 *  @param pushName 要present到的控制器名称
 *  @param params 属性参数
 */

- (void)present:(NSString * _Nonnull)pushName params:(NSDictionary<NSString *, id> *__nullable)params;

//presentViewController

/**
 *  Pop到上一个控制器
 */
- (void)pop;

/**
 *  pop到根控制器
 */
- (void)popToRoot;
/**
 *  显示系统弹框 （网络请求错误时候使用
 */
- (void)showAlertWithMessage:(NSString *_Nonnull)msg;

/**
 *  显示系统弹框，并带有确认后续操作
 *
 */
- (void)showAlertWithMessage:(NSString *_Nonnull)msg ok:(void (^ __nullable)(void))okHandler;

/**
 *  显示系统弹框，带有取消按钮
 *
 */
- (void)showAlertWithMessage:(NSString *_Nonnull)msg ok:(void (^ __nullable)(void))okHandler cancel:(void (^ __nullable)(void))cancelHandler;
/**
 *  显示系统弹框，带有textfield
 *
 */

- (void)showAlertWithMessage:(NSString *_Nonnull)msg title:(NSString *_Nonnull)title textfield:(void (^ __nullable)(UITextField * _Nullable textField))textfieldHandler
                     confirm:(void (^ __nullable)(void))confirmHandler
                      cancel:(void (^ __nullable)(void))cancelHandler ;

@property (nonatomic, assign) BOOL banScreenshot;
@end

NS_ASSUME_NONNULL_END
